function K_NS()
{
	//use xml as data source
	function K_TreeDataXml(doc)
	{
		this.doc=doc;
	}
	K_TreeDataXml.prototype=new K_TreeData();
	K_TreeDataXml.prototype.getItemByNode=function(node)
	{
		var item=new K_TreeItem();
		for(var i=0;i<node.attributes.length;i++)
		{
			var attr=node.attributes[i];
			item[attr.nodeName]=attr.value;
		}
		return item;
	}
	//parse a node to item
	K_TreeDataXml.prototype.parseItem=function(node)
	{
		if(!node){return null;}
		var item=this.getItemByNode(node);
		item._node=node;
		return item;
	}
	//read a root item
	K_TreeDataXml.prototype.readRootItem=function()
	{
		if(!this.doc.documentElement){return null;}
		return this.parseItem(this.doc.documentElement);
	}

	//read first child item of a item
	K_TreeDataXml.prototype.readItemFirstChild=function(item)
	{
		if(!item._node.firstChild){return null;}
		return this.parseItem(item._node.firstChild);
	}

	//read the next sibling item of a item
	K_TreeDataXml.prototype.readItemNextSibling=function(item)
	{
		if(!item._node.nextSibling){return null;}
		return this.parseItem(item._node.nextSibling);
	}
	//run when item update
	K_TreeDataXml.prototype.updateItem=function(item,property,value)
	{
	}
	//create a new item
	K_TreeDataXml.prototype.createItem=function(parent,pItem)
	{
		return new K_TreeItem();
	}
	//clear item
	K_TreeDataXml.prototype.clearItem=function(item)
	{
	}
	window.K_TreeDataXml=K_TreeDataXml;
}
K_NS();